<?php

namespace PAT\UserBundle\Controller;

use PAT\UserBundle\Entity\Reduction;

use Symfony\Component\Security\Core\SecurityContext;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;

class UserController extends Controller
{
    public function getTokenAction()
    {
    	return new Response($this->container->get('form.csrf_provider')
    			->generateCsrfToken('authenticate'));
    }
    
    public function addCodeReductionFromCanvasGameAction(){
    	$request = $this->container->get('request');    	
    	if($request->isXmlHttpRequest())
    	{
    		$user = $this->container->get("security.context")->getToken()->getUser();
	    	if (is_object($user)) {
	    		$em = $this->getDoctrine()->getEntityManager();
	    		$user_reducs = $user->getReductions();
	    		$exist = false;
	    		foreach($user_reducs as $r){
	    			if($r->getType() == 'canvas'){
	    				$exist = true;
	    				break;
	    			}
	    		}
	    		
    			if(!$exist){
    				$code = $this->generateCodeCanvas();
    				$reduc = new Reduction("canvas", true, 2, $code);
    				$em->persist($reduc);
	    			$user->addReduction($reduc);
	    			$em->persist($user);
	    			$em->flush();
	    			return new Response("Votre bon de réduction est disponible dans votre espace client !");
    			}
    			else return new Response("Votre bon de réduction est déjà disponible dans votre espace client !");
	    	}
	    	else return new Response("Vous devez être connecté pour recevoir votre bon de réduction !");
    	}
    	else return new Response("Une erreur s'est produite");
    }
    
    public function generateCodeCanvas(){
    	$str = "";
    	$chaine = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJIKLMNOXYZ0123456789";
    	$nb_chars = strlen($chaine);
    	for($i=0;$i<8;$i++){
    		$str .= $chaine[ rand(0, ($nb_chars-1)) ];
    	}
    	return $str; 
    }
}
